package br.com.senac.digipao.servlet;

import br.com.senac.digipao.bean.ContasPagar;
import br.com.senac.digipao.dao.ContasDao;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "pesquisaContasPagarServlet", urlPatterns = {"/pesquisaContasPagar"})
public class PesquisaContasPagarServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        String operacao = request.getParameter("operacao");

        if (operacao.equals("Pesquisar")) {
            // pegando os parâmetros do request
            //String parametro = request.getParameter("pesquisa");      
            String parametro = request.getParameter("pesquisaContasPagar");
            try {
                ContasDao dao = new ContasDao();
                List<ContasPagar> listaContasPagar = dao.listaContasPagarParametros(parametro);

                if (listaContasPagar.size() > 0) {
                    request.getSession().setAttribute("ListaContasPagar", listaContasPagar);
                }

                RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/resultadoPesquisaContasPagar.jsp");
                rd.forward(request, response);

            } catch (SQLException ex) {
                Logger.getLogger(PesquisaContasPagarServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (operacao.equals("Alterar")) {
            //recupera valor do idUsuario do radio button selecionado
            int idContasPagar = Integer.parseInt(request.getParameter("select"));
            //recupera lista de usuários da sessão
            List<ContasPagar> listaContasPagar = (List<ContasPagar>)request.getSession(true).getAttribute("ListaContasPagar");

            //verifica se lista foi recuperada da sessão
            if (listaContasPagar != null && listaContasPagar.size() > 0) {
                //procura na lista qual foi o usuario selecionado e quando encontra, salva na sessão como "UsuarioParaAlterar"
                for (int i = 0; i <= listaContasPagar.size(); i++) {
                    if (listaContasPagar.get(i).getIdContasPagar() == idContasPagar) {
                        request.getSession().setAttribute("ContasPagarParaAlterar", listaContasPagar.get(i));
                        break;
                    }
                }

            } else {
                try {
                    //se não foi encontrada a lista, busca usuário do banco
                    ContasDao dao = new ContasDao();
                    request.getSession().setAttribute("ContasPagarParaAlterar", dao.buscaContasPagarPorId(idContasPagar));
                } catch (SQLException ex) {
                    Logger.getLogger(PesquisaUsuarioServlet.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/alteraCadastroContasPagar.jsp");
            rd.forward(request, response);
        } else if (operacao.equals("Deletar")) {

            try {
                ContasDao dao = new ContasDao();
                dao.excluiContasPagarPorId(Integer.parseInt(request.getParameter("select")));
            } catch (SQLException ex) {
                Logger.getLogger(PesquisaUsuarioServlet.class.getName()).log(Level.SEVERE, null, ex);
            }

            request.getSession().removeAttribute("ListaContasPagar");

            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/excluidoComSucesso.jsp");
            rd.forward(request, response);

        } else if (operacao.equals("PesquisarNovamente")) {

            request.getSession().removeAttribute("ListaContasPagar");
            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/pesquisaContasPagar.jsp");
            rd.forward(request, response);

        } else {
            request.getSession().removeAttribute("ContasPagarParaAlterar");
            request.getSession().removeAttribute("ListaContasPagar");
            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/menuPrincipal.jsp");
            rd.forward(request, response);
        }
    }

}
